package com.todo.strategy.offline.iface.response;

import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.util.List;

/**
 * @author zhangwenxiang
 * @date 2024/3/17 19:23
 * @description
 */
@Data
@Schema(title = "平台攻略详情出参",description = "平台攻略详情出参")
public class PlatformStrategyDetailResp {

    @JsonSerialize(using = ToStringSerializer.class)
    @Schema(title = "主键id",description = "主键id")
    private String strategyId;

    @Schema(title = "标题",description = "标题")
    private String title;

    @Schema(title = "推荐原因",description = "推荐原因")
    private String recommendDesc;

    @Schema(title = "攻略类型",description = "攻略类型")
    private Integer strategyType;
    /**
     * 旅游天数类型：一天一夜、两天一夜等
     * TravelDayTypeEnum
     */
    @Schema(title = "旅游天数类型",description = "一天一夜、两天一夜等")
    private Integer travelTimeType;

    @Schema(title = "推荐旅游月份",description = "推荐旅游月份")
    private List<String> recommendMonth;

    @Schema(title = "主图",description = "主图")
    private String mainImg;

    @Schema(title = "省份",description = "省份")
    private String province;

    @Schema(title = "城市",description = "城市")
    private String city;

    @Schema(title = "预计花费",description = "预计花费")
    private Integer moneyCost;

    @Schema(title = "预计游玩时长",description = "预计游玩时长")
    private Integer timeCost;

    @Schema(title = "综合评分",description = "综合评分")
    private Integer score;
    /**
     * 状态
     * StrategyStatusEnum
     */
    @Schema(title = "状态",description = "状态")
    private Integer status;

    @Schema(title = "是否免费",description = "是否免费")
    private Integer isFree;

    @Schema(title = "是否允许评论",description = "是否允许评论")
    private Integer allowComment;

    @Schema(title = "复用数量",description = "复用数量")
    private Integer referenceCount;

    @Schema(title = "创建人",description = "创建人")
    private String createUser;

    @Schema(title = "年龄建议",description = "年龄建议")
    private String ageSuggest;

    @Schema(title = "旅行建议",description = "旅行建议")
    private TravelSuggest travelSuggest;

    @Schema(title = "说明",description = "说明")
    private Instructions instructions;

    @Schema(title = "安全建议",description = "安全建议")
    private SecuritySuggest securitySuggest;

    @Schema(title = "备注",description = "备注")
    private String remark;

    @Schema(title = "关联图片",description = "关联图片")
    private List<String> imgList;


    @Data
    @Schema(title = "旅游建议",description = "旅游建议")
    public static class TravelSuggest{

        @Schema(title = "出行建议",description = "出行建议")
        private String travelSuggest;

        @Schema(title = "必备品",description = "必备品")
        private List<String> essentialItems;

        @Schema(title = "建议携带品",description = "建议携带品")
        private List<String> suggestCarry;

        @Schema(title = "季节建议",description = "季节建议")
        private String seasonSuggest;

        @Schema(title = "槽点",description = "槽点")
        private String disclose;
    }

    @Data
    @Schema(title = "说明",description = "说明")
    public static class Instructions{

        @Schema(title = "难度评分 1-10",description = "难度评分 1-10")
        private Integer difficultyLevel;

        @Schema(title = "当地文化介绍",description = "当地文化介绍")
        private String localCulture;
    }

    @Data
    @Schema(title = "安全建议",description = "安全建议")
    public static class SecuritySuggest{

        @Schema(title = "出行限制",description = "出行限制")
        private String travelLimit;

        @Schema(title = "常规出行注意事项",description = "常规出行注意事项")
        private String baseAttention;

        @Schema(title = "户外注意事项",description = "户外注意事项")
        private String outDoorAttention;

        @Schema(title = "基础问题救助",description = "基础问题救助")
        private String assistance;
    }
}
